package com.example.java.designpattern.singleton;

import com.example.java.designpattern.Divisor;

/**
 * 双重检查锁定单例
 */
public class DCLLazySingleton implements Divisor {

    private static volatile Divisor instance; //volatile防止质量重排序

    private DCLLazySingleton() {
    }

    public static Divisor getInstance() {
        if (instance == null) { //第一次检查，如果不是空的就可以直接返回了
            synchronized (DCLLazySingleton.class) {
                if (instance == null) { //如果没有这几句，那么等待的线程不知道先前的线程已经创建实例
                    instance = new DCLLazySingleton();
                }
            }
        }
        return instance;
    }

    @Override
    public void divide(String target) {
    }
}
